home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Science / µSim 1.0b5 folder / source / Globals.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-03  |  8.1 KB  |  460 lines  |  [TEXT/MMCC]

  1. #if USESROUTINEDESCRIPTORS
  2.  
  3.    enum {
  4.       myUppListClickLoopProcInfo = kRegisterBased
  5.       | RESULT_SIZE(kNoByteCode)
  6.       | REGISTER_RESULT_LOCATION(kCCRegisterZBit)
  7.    };
  8.    
  9.    #define MyNewListClickLoopProc(userRoutine)  \
  10.       (ListClickLoopUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), \
  11.       myUppListClickLoopProcInfo, GetCurrentISA())
  12.          
  13.    #define kListClickLoopTrue false
  14.    #define kListClickLoopFalse true
  15.       
  16. #else
  17.  
  18.    #define MyNewListClickLoopProc(userRoutine)  \
  19.       (ListClickLoopUPP)(userRoutine)
  20.          
  21.    #define kListClickLoopTrue true
  22.    #define kListClickLoopFalse false
  23.  
  24. #endif
  25.  
  26. /* balloon help */
  27. enum balllll {
  28. kBalloons_Anim = 1010,
  29. kBalloons_Regs,
  30. kBalloons_MPrg,
  31. kBalloons_Dump,
  32. kBAnim_ALatch = 1,
  33. kBAnim_BLatch,
  34. kBAnim_MAR,
  35. kBAnim_MBR,
  36. kBAnim_AMUX,
  37. kBAnim_Shifter,
  38. kBAnim_Inc,
  39. kBAnim_MMUX,
  40. kBAnim_MPC,
  41. kBAnim_ALU,
  42. kBAnim_MSL,
  43. kBAnim_MIR,
  44. kBAnim_Regs,
  45. kBAnim_CStore,
  46. kBAnim_MAP,
  47. kBRegs_Base = 1,
  48. kBRegs_PC,
  49. kBRegs_AC,
  50. kBRegs_SP,
  51. kBRegs_BP,
  52. kBRegs_IR,
  53. kBRegs_A,
  54. kBRegs_B,
  55. kBRegs_C,
  56. kBRegs_D,
  57. kBRegs_E,
  58. kBRegs_X12,
  59. kBRegs_X11,
  60. kBRegs_Lo8,
  61. kBMPr_ABus = 1,
  62. kBMPr_BBus,
  63. kBMPr_CBus,
  64. kBMPr_MAR,
  65. kBMPr_MBR,
  66. kBMPr_BusReq,
  67. kBMPr_Shifter,
  68. kBMPr_Branch,
  69. kBMPr_ALU,
  70. kBMPr_ABusRadio,
  71. kBMPr_MBRRadio,
  72. kBMPr_MAP,
  73. kBMPr_BranchTo,
  74. kBMPr_Comment,
  75. kBMPr_CommentsList,
  76. kBMPr_ConvInstrList,
  77. kBDump_Contents = 1,
  78. kBDisasm_Contents,
  79. kBIO_Contents
  80. };
  81.  
  82. /*    kScrollbarAdjust and kScrollbarWidth are used in calculating
  83.     values for control positioning and sizing. */
  84. enum {
  85. kScrollbarAdjust = 15,
  86. kScrollbarWidth
  87. };
  88.  
  89. enum {
  90. khiliteGhost = 50    /* defined in Inside Mac V, but NOT in QuickDraw.h: why??? */
  91. };
  92.  
  93. enum suoni {
  94. kSndPinzatrice = 256
  95. };
  96.  
  97. /* Menu list resource IDs */
  98. enum menures {
  99. kRes_Menu_HMemory = 1,
  100. kRes_Menu_HRegs,
  101. kRes_Menu_HDisasm,
  102. kRes_Menu_HDump,
  103. kRes_Menu_PopDump = 136,
  104. kRes_Menu_Apple = 256,
  105. kRes_Menu_File,
  106. kRes_Menu_Edit,
  107. kRes_Menu_Windows,
  108. kRes_Menu_Control,
  109. kRes_Menu_Assembler
  110. };
  111.  
  112. enum {
  113. kD_Edit = 1,
  114. kD_Disasm = 3,
  115. kD_DisasmFrom,
  116. kD_DumpFrom
  117. };
  118.  
  119. enum {
  120. kMItem_About__Simulato = 1
  121. };
  122.  
  123. enum fileitems {
  124. kMItem_New = 1,
  125. kMItem_Open_Control_St,
  126. kMItem_Close = 4,
  127. kMItem_Save_Control_St,
  128. kMItem_Save_Control_St2,
  129. kMItem_Revert_to_Saved,
  130. kMItem_HMem = 9,
  131. kMItem_HRegs,
  132. kMItem_Page_Setup = 12,
  133. kMItem_Print,
  134. kMItem_Prefs = 15,
  135. kMItem_Quit = 17
  136. };
  137.  
  138. enum edititems {
  139. kMItem_Undo = 1,
  140. kMItem_Cut = 3,
  141. kMItem_Copy,
  142. kMItem_Paste,
  143. kMItem_Clear,
  144. kMItem_Select_All,
  145. kMItem_Insert = 9,
  146. kMItem_Delete
  147. };
  148.  
  149. enum windowsitems {
  150. kMItem_Animation = 1,
  151. kMItem_Registers,
  152. kMItem_IO,
  153. kMItem_Microprogram,
  154. kMItem_Disasm,
  155. kMItem_Dump
  156. };
  157.  
  158. enum hieritems {
  159. kMItem_Open = 1,
  160. kMItem_Save_As
  161. };
  162.  
  163. enum controlitems {
  164. kMItem_Go = 1,
  165. kMItem_Stop,
  166. kMItem_StepSub = 4,
  167. kMItem_StepMicro,
  168. kMItem_StepInstr,
  169. kMItem_ResetMem = 8,
  170. kMItem_ResetRegs,
  171. kMItem_Disasmfrom = 11,
  172. kMItem_Dumpfrom,
  173. kMItem_SelectCurMPC
  174. };
  175.  
  176. enum asmitems {
  177. kMItem_Assemble_file = 1,
  178. kMItem_AsmPrefs = 3
  179. };
  180.  
  181. /* sizes */
  182. enum sizes {
  183. kNUMOFPARTS = 10,
  184. kNUMOFSTATEPARTS = 23,
  185. kSIZE_RAM = 128*1024L,
  186. kSIZE_ASSMEM = 256,
  187. kSIZE_CSMEM = 512
  188. };
  189.  
  190. /* registers */
  191. enum registers {
  192. kREG_PC = 0,
  193. kREG_AC,
  194. kREG_SP,
  195. kREG_BP,
  196. kREG_IR,
  197. kREG_A,
  198. kREG_B,
  199. kREG_C,
  200. kREG_D,
  201. kREG_E,
  202. kREG_EXT12,
  203. kREG_EXT11,
  204. kREG_LOW8,
  205. kREG_ZERO,
  206. kREG_ONE,
  207. kREG_MINUS1,
  208. kNUMOFREGS
  209. };
  210.  
  211. enum micstatus {
  212. kST_STOPPED = 0,
  213. kST_GOING,
  214. kST_STEPASM,
  215. kST_STEPMPROG,
  216. kST_STEPSUBCYC
  217. };
  218.  
  219. /* resources types, file types, creator */
  220. enum filetypes {
  221. krInstructions = 'OPCO',
  222. krHandlers = 'HAND',
  223. kFTY_CSTORE = 'µPRG',
  224. kFTY_RAM = 'µRAM',
  225. kFCR_MINE = 'µSIM',
  226. kFTY_CSTOREPAD = 'sPRG',
  227. kFTY_REG = 'µREG'
  228. };
  229.  
  230. /* alerts */
  231. enum alerts {
  232. kALRT_STKUNDERFLOW = 135,
  233. kALRT_INFLOOP,
  234. kALRT_TOSHELL,
  235. kALRT_STKOVERFLOW = 140
  236. };
  237.  
  238. enum somealerts {
  239. kALRT_NOSAFESAVE = 129,
  240. kALRT_ERROR = 130,
  241. kALRT_NOSYS7,
  242. kALRT_NOSAVE = 132,
  243. kALRT_MEMTOOFULL = 141,
  244. kALRT_REVERT,
  245. kALRT_SAVE = 200
  246. };
  247.  
  248. /* strings */
  249. enum {
  250. kSTR_PREFSFILENAME = 138
  251. };
  252.  
  253. enum {
  254. kSTR_RAMPROMPT = 133,
  255. kSTR_RAMDEFNAME,
  256. kSTR_REGSPROMPT = 139,
  257. kSTR_REGSDEFNAME
  258. };
  259.  
  260. /* save selectors */
  261. enum savesel {
  262. kGOT_SAVE = 0,
  263. kGOT_SAVEAS
  264. };
  265.  
  266. enum defaultregs {
  267. kPCStart = 8192,
  268. kStackBase = 65536-4098,
  269. kStackSize = 1024,
  270. kPCExitToShell = 4096,
  271. kIllegalVector = 3,
  272. kIllegalHandler = 0x300,
  273. kIllegalHandlerCode = 128
  274. };
  275.  
  276. enum myAEIDs {
  277. kAEmySignalIO = 'I/O '
  278. };
  279.  
  280. enum dialogItems {
  281. kfakeUpdateItem = 0
  282. };
  283.  
  284. enum editdialogstrs {
  285. kInThe = 0,
  286. kAtMem,
  287. kValueFollow = 130
  288. };
  289.  
  290. enum {
  291. kCurPrefsVersion = 3
  292. };
  293.  
  294. enum {
  295. kfIsStationery = (1 << 11)
  296. //fNameLocked = (1 << 12)
  297. };
  298.  
  299.  
  300. #define ISAPPWINDOW(w)    (w ? ((WindowPeek) w)->windowKind >= userKind : false)
  301.  
  302. #define ISDAWINDOW(w)    (w ? ((WindowPeek) w)->windowKind < 0 : false)
  303.  
  304. #define toMenu(m, i)    (((long)m << 16) + i)
  305.  
  306. #define PTR2MEMWORD(address)    ((unsigned long)((Ptr)(address) - gMMemory) >> 1)
  307.  
  308. #define PRCT_T(f)    (f->portRect.top)
  309. #define PRCT_L(f)    (f->portRect.left)
  310. #define PRCT_B(f)    (f->portRect.bottom)
  311. #define PRCT_R(f)    (f->portRect.right)
  312.  
  313. /* Define HiWrd and LoWrd macros for efficiency. */
  314. #define HiWrd(aLong)    (short)(((unsigned long)aLong) >> 16)
  315. #define LoWrd(aLong)    (short)((aLong) & 0xFFFF)
  316.  
  317. /* ======================================================= */
  318.  
  319. union u_mir {
  320.     struct {
  321.         unsigned    amux    : 1;
  322.         unsigned    cond    : 2;
  323.         unsigned    alu        : 2;
  324.         unsigned    shift    : 2;
  325.         unsigned    mbr        : 1;
  326.         unsigned    rd        : 1;
  327.         unsigned    wr        : 1;
  328.         unsigned    mar        : 1;
  329.         unsigned    dsc        : 1;
  330.         unsigned    a        : 4;
  331.         unsigned    b        : 4;
  332.         unsigned    c        : 4;
  333.         unsigned    map        : 1;
  334.         unsigned    addr    : 7;
  335.         } bits;
  336.     unsigned long cstore;
  337.     };
  338.  
  339. typedef union u_mir un_mir;
  340.  
  341.  
  342. #if defined(powerc) || defined (__powerc)
  343. #pragma options align=mac68k
  344. #endif
  345. struct ROpcode {
  346.     OSType    instr;
  347.     Byte    length;
  348.     Byte    class;
  349.     Byte    offsetHB;
  350.     Byte    offsetLB;
  351.     Byte    lastHB;
  352.     Byte    lastLB;
  353.     };
  354. #if defined(powerc) || defined(__powerc)
  355. #pragma options align=reset
  356. #endif
  357.  
  358. typedef struct ROpcode ROpcode;
  359. typedef ROpcode *ROpcodePtr;
  360. typedef ROpcodePtr *ROpcodeHandle;
  361.  
  362. #if defined(powerc) || defined (__powerc)
  363. #pragma options align=mac68k
  364. #endif
  365. struct ROpcodeDisasm {
  366.     OSType    instr;
  367.     Byte    length;
  368.     Byte    class;
  369.     short    first;
  370.     short    last;
  371.     };
  372. #if defined(powerc) || defined(__powerc)
  373. #pragma options align=reset
  374. #endif
  375.  
  376. typedef struct ROpcodeDisasm ROpcDisasm;
  377. typedef ROpcDisasm *ROpcDisasmPtr;
  378. typedef ROpcDisasmPtr *ROpcDisasmHandle;
  379.  
  380. #if defined(powerc) || defined (__powerc)
  381. #pragma options align=mac68k
  382. #endif
  383. struct myprefs {
  384.     short    prefsVersion;
  385.     Boolean    remembWind;
  386.     Boolean    NeXTScroll;
  387.     Point    AnimTopLeft;
  388.     Point    RegsTopLeft;
  389.     short    RegsBase;
  390.     unsigned short    DefPCValue;
  391.     unsigned short    DefSPValue;
  392.     short    DefStkSize;
  393.     Rect    IOUserState;
  394.     Point    MProgTopLeft;
  395.     Point    DumpTopLeft;
  396.     short    DumpHeight;
  397.     short    DumpScrollVal;
  398.     Point    DisasmTopLeft;
  399.     short    DisasmHeight;
  400.     short    DisasmScrollVal;
  401.     Boolean AnimVisible;
  402.     Boolean    RegsVisible;
  403.     Boolean    IOVisible;
  404.     Boolean    DumpVisible;
  405.     Boolean    DisasmVisible;
  406.     Boolean infLoopsDetect;
  407.     };
  408. #if defined(powerc) || defined(__powerc)
  409. #pragma options align=reset
  410. #endif
  411.  
  412. /************************************************************/
  413. extern EventRecord    gMyEvent;
  414. extern SndCallBackUPP    gmyCallbackUPP;
  415. extern GrowZoneUPP        gMyGrowZoneUPP;
  416. extern ListClickLoopUPP    gInstrClikLoopUPP;
  417. extern ListClickLoopUPP    gCommentClikLoopUPP;
  418. extern ListClickLoopUPP    gSwitchCursClikLoopUPP;
  419. extern TEHandle    gTheInput;
  420. extern CursHandle    gWatchHandle, gIBeamHandle, gPlusHandle;
  421. extern short    gRstatus, gZoomFactor;
  422. extern short    gSubclk;
  423. extern short    gNumAsyncSnds;
  424. extern Boolean    gDoneFlag;
  425. extern Boolean  gInTheForeground;
  426. extern Boolean    gHasColorQD, gPwrManagerIsPresent;
  427.  
  428.  
  429. extern struct myprefs gPrefs;
  430.  
  431. extern short    gRegs[kNUMOFREGS];
  432. extern short    gParts[kNUMOFPARTS];
  433. extern Ptr    gMMemory;
  434. extern Ptr    gAssMemory;
  435. extern union u_mir *gCsMemory;
  436. extern unsigned short    gILCBase;
  437.  
  438. extern MenuHandle    gMenu_Apple;
  439. extern MenuHandle    gMenu_File;
  440. extern MenuHandle    gMenu_Edit;
  441. extern MenuHandle    gMenu_Windows;
  442. extern MenuHandle    gMenu_Control;
  443. extern MenuHandle    gMenu_Assembler;
  444. extern MenuHandle    gMenu_Memory;
  445. extern MenuHandle    gMenu_Registers;
  446. extern MenuHandle    gMenu_DisasmF;
  447. extern MenuHandle    gMenu_DumpF;
  448. extern MenuHandle    gPopMenu;
  449.  
  450.  
  451. extern WindowPtr    gWPtr_Animation;
  452. extern WindowPtr    gWPtr_Dump;
  453. extern WindowPtr    gWPtr_Microprogram_Ed;
  454. extern WindowPtr    gWPtr_Registers;
  455. extern WindowPtr    gWPtr_Disasm;
  456. extern WindowPtr    gWPtr_IO;
  457.  
  458. //pascal Boolean HVInRect(short h, short v, const Rect *r) = 0xA8AD;
  459.  
  460.